﻿

$(document).ready(function () {

    //Aplicando a máscara de Numero
    $("input[tipo='numero']").each(function () {
        $(this).bind('keydown', SomenteNumeros);
    });

    //Aplicando a máscara de moeda
    $("input[tipo='moeda']").each(function () {
        $(this).maskMoney({ symbol: "R$", decimal: ",", thousands: "." });
    });
    //Fim Aplicando a máscara de moeda

    //Validar campos obrigatórios
    $("input[obrigatorio],select[obrigatorio]").each(function () {
        $(this).blur(function () {
            if ($(this).val() != "") {
                $(this).removeClass("erro");
                $(this).removeAttr("title");
                $(this).tooltip({ blocked: true });
            }
            else {
                $(this).addClass("erro");
                $(this).attr("title", "Campo obrigatório");
                $(this).tooltip({ blocked: false });
            }
        });
    });
    //Fim Validar campos obrigatórios

    //Validar e-mail
    $("input[tipo='email']").each(function () {
        $(this).blur(function () {
            var email = $(this).val();
            if (email != "") {
                er = /^[a-zA-Z0-9][a-zA-Z0-9\._-]+@([a-zA-Z0-9\._-]+\.)[a-zA-Z-0-9]{2}/;
                if (er.exec(email)) {
                    $(this).removeClass("erro");
                    $(this).removeAttr("title");
                    $(this).tooltip({ blocked: true });
                    return true;
                }
                else {
                    $(this).focus();
                    $(this).addClass("erro");
                    $(this).attr("title", "E-mail inválido");
                    $(this).tooltip({ blocked: false });
                    return false;
                }
            }
        });
    });
    //Fim Validar e-mail

    //Validar CNPJ válido e já cadastrado
    $("input[tipo='cnpj']").each(function () {
        $(this).blur(function () {
            $("input[validar]").removeAttr("disabled");
            $("input[validar]").removeAttr("title");
            $(this).removeAttr("title", "CNPJ inválido");
            $(this).tooltip({ blocked: false });
            $("#spanCNPJ").hide();

            if ($(this).val() != "") {
                if (!ValidarCNPJ($(this).val())) {
                    $(this).focus();
                    $(this).addClass("erro");
                    $(this).attr("title", "CNPJ inválido");
                    $(this).tooltip({ blocked: false });
                    $("input[validar]").attr("disabled", "disabled");
                    $("input[validar]").attr("title", "Preencha corretamente o formulário");
                }
                else {
                    if (!VerificarCNPJCadastro($(this).val())) {
                        $(this).focus();
                        $(this).addClass("erro");
                        $("input[validar]").attr("disabled", "disabled");
                        $("input[validar]").attr("title", "Preencha corretamente o formulário");
                        $("#spanCNPJ").show();
                    }
                }
            }
            else {
                $(this).addClass("erro");
                $(this).attr("title", "Campo obrigatório");
                $(this).tooltip({ blocked: false });
            }
        });
    });
    //Fim Validar CNPJ

    //Validar todos os obrigatórios no clique do botão
    $(":input[validar]").click(function () {
        var submit = true;
        var grupo = $(this).attr("validar");
        $(":input[obrigatorio='"+ grupo +"']").each(function () {
            if ($(this).val() == "") {
                submit = false;
                $(this).addClass("erro");
                $(this).attr("title", "Campo obrigatório");
            }
        });
        return submit;
    });
    //Fim Validar todos os obrigatórios no clique do botão

    //Validar CPF válido
    $("input[tipo='cpf']").each(function () {
        $(this).blur(function () {
            if ($(this).val() != "") {
                $("input[validar]").removeAttr("disabled");
                $("input[validar]").removeAttr("title");
                $(this).removeAttr("title", "CPF inválido");
                $(this).tooltip({ blocked: false });
                if (!ValidarCPF($(this).val())) {
                    $(this).focus();
                    $(this).addClass("erro");
                    $(this).attr("title", "CPF inválido");
                    $(this).tooltip({ blocked: false });
                    $("input[validar]").attr("disabled", "disabled");
                    $("input[validar]").attr("title", "Preencha corretamente o formulário");
                }
            }
        });
    });
    //Fim validar CPF
});

//************************************************************** Funções ****************************************************************************
function VerificarCNPJCadastro(valor) {
    var retorno = true;
    var CNPJ = valor;
    CNPJ = CNPJ.replace(".", "");
    CNPJ = CNPJ.replace(".", "");
    CNPJ = CNPJ.replace("-", "");
    CNPJ = CNPJ.replace("/", "");
    $.ajax({
        type: "POST",
        url: "PessoaJuridica.aspx/VerificaCNPJ",
        data: "{'cnpj':'" + CNPJ + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: false,
        error: function (xhr, ajaxOptions, thrownError) {
            //alert(ajaxOptions);
        },
        success: function (json) {
            var obj = json.d;            
            if (obj) {
                retorno=false;
            }
            else {
                retorno=true;
            }
        }
    });

    return retorno;
}

function Validar() { 
    var submit = true;
    $(":input[obrigatorio]").each(function () {
        if ($(this).val() == "") {
            submit = false;
            var css = $(this).attr("class");
            $(this).addClass("erro");
            $(this).attr("title", "Campo obrigatório");
            $(this).tooltip({ blocked: false });
            $("#mensagemErro").show();
        }
    });
    setTimeout(function () {
        $("#mensagemErro").fadeOut(2000);
    }, 4000);
    return submit;
}

function ValidarCNPJ(CNPJ) {    
    if (!CNPJ) { return false; }
    erro = new String;
    if (CNPJ == "00.000.000/0000-00") { erro += "CNPJ inválido\n\n"; }
    CNPJ = CNPJ.replace(".", "");
    CNPJ = CNPJ.replace(".", "");
    CNPJ = CNPJ.replace("-", "");
    CNPJ = CNPJ.replace("/", "");

    var a = [];
    var b = new Number;
    var c = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    for (i = 0; i < 12; i++) {
        a[i] = CNPJ.charAt(i);
        b += a[i] * c[i + 1];
    }
    if ((x = b % 11) < 2) {
        a[12] = 0
    } else {
        a[12] = 11 - x
    }
    b = 0;
    for (y = 0; y < 13; y++) {
        b += (a[y] * c[y]);
    }
    if ((x = b % 11) < 2) {
        a[13] = 0;
    } else {
        a[13] = 11 - x;
    }
    if ((CNPJ.charAt(12) != a[12]) || (CNPJ.charAt(13) != a[13])) { erro += "Dígito verificador com problema!"; }
    if (erro.length > 0) {
        $(this).val('');
        return false;
    }
    return true;
}

function ValidarCPF(c) {
    var cpf = c.replace(".", "");
    cpf = cpf.replace(".", "");    
    cpf = cpf.replace("-", "");    
    var numeros, digitos, soma, i, resultado, digitos_iguais;
    digitos_iguais = 1;
    if (cpf.length < 11)
        return false;
    for (i = 0; i < cpf.length - 1; i++)
        if (cpf.charAt(i) != cpf.charAt(i + 1)) {
            digitos_iguais = 0;
            break;
        }
    if (!digitos_iguais) {
        numeros = cpf.substring(0, 9);
        digitos = cpf.substring(9);
        soma = 0;
        for (i = 10; i > 1; i--)
            soma += numeros.charAt(10 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(0))
            return false;
        numeros = cpf.substring(0, 10);
        soma = 0;
        for (i = 11; i > 1; i--)
            soma += numeros.charAt(11 - i) * i;
        resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;
        if (resultado != digitos.charAt(1))
            return false;
        return true;
    }
    else
        return false;
}

function SomenteNumeros(e) {

    //teclas adicionais permitidas (tab,delete,backspace,setas direita e esquerda)
    keyCodesPermitidos = new Array(8, 9, 37, 39, 46);

    //numeros e 0 a 9 do teclado alfanumerico
    for (x = 48; x <= 57; x++) {
        keyCodesPermitidos.push(x);
    }

    //numeros e 0 a 9 do teclado numerico
    for (x = 96; x <= 105; x++) {
        keyCodesPermitidos.push(x);
    }

    //Pega a tecla digitada
    keyCode = e.which;

    //Verifica se a tecla digitada é permitida
    if ($.inArray(keyCode, keyCodesPermitidos) != -1) {
        return true;
    }
    return false;
}





